Ik wil een branch zowel lokaal als op afstand verwijderen. Mislukte pogingen om een externe tak te verwijderen $ git branch -d remotes / origin / bugfix fout: branch 'remotes / origin / bugfix' niet gevonden. $ git branch -d oorsprong / bugfix error: branch 'origin / bugfix' niet gevonden. $ git branch -rd oorsprong / bugfix Verwijderde remote branch origin / bugfix (was 2a14ef7). $ git push Alles actueel $ git pull Van github.com:gituser/gitproject * [nieuwe branch] bugfix -> oorsprong / bugfix Al bijgewerkt. Wat moet ik anders doen om de remotes / origin / bugfix branch zowel lokaal als op afstand succesvol te verwijderen?
2020-12-07 13:10:48
1 2 De volgende Managementsamenvatting $ git push -d$ git branch -d Merk op dat in de meeste gevallen de naam op afstand de oorsprong is. In dat geval moet u het commando op dezelfde manier gebruiken. $ git push -d oorsprong Verwijder Local Branch Gebruik een van de volgende opties om de lokale branch te verwijderen: $ git branch -d branch_name $ git branch -D branch_name Opmerking: De optie -d is een alias voor --delete, die alleen de branch verwijdert als deze al volledig is samengevoegd in de upstream branch. Je zou ook -D kunnen gebruiken, wat een alias is voor --delete --force, die de branch verwijdert "ongeacht zijn samengevoegde status." [Bron: man git-branch] Merk ook op dat git branch -d branch_name zal mislukken als je dat momenteel bent in de branch die u wilt verwijderen. Het bericht begint met fout: kan de branch 'branch_name' niet verwijderen. Schakel dan eerst over naar een andere branch, bijvoorbeeld: git checkout master. Remote Branch verwijderen [Bijgewerkt op 8 september 2017] Vanaf Git v1.7.0 kun je een remote branch verwijderen met $ git push --delete wat misschien gemakkelijker te onthouden is dan $ git push : die is toegevoegd in Git v1.5.0 "om een remote branch of een tag te verwijderen." Beginnend op Git v2.8.0 kun je ook git push gebruiken met de -d optie als een alias voor --delete. Daarom zal de versie van Git die je hebt geïnstalleerd bepalen of je de eenvoudigere of moeilijkere syntaxis moet gebruiken. Remote Branch verwijderen [Oorspronkelijk antwoord van 5 jan. 2010] Uit hoofdstuk 3 van Pro Git door Scott Chacon: Externe filialen verwijderen Stel dat je klaar bent met een remote branch - stel dat jij en je medewerkers klaar zijn met een feature en deze hebben samengevoegd in de master branch van je remote (of in welke branche je stabiele coderegel ook is). Je kunt een remote branch verwijderen met de nogal stompe syntaxis git push [remotename]: [branch]. Als je je server-fix branch van de server wilt verwijderen, voer je het volgende uit: $ git push oorsprong: serverfix Aan git@github.com: schacon / simplegit.git - [verwijderd] serverfix Boom. Geen vertakkingen meer op uw server. Misschien wilt u deze pagina achterhalen, omdat u die opdracht nodig heeft en u waarschijnlijk de syntaxis vergeet. Een manier om dit commando te onthouden is door de git push [remotename] [localbranch]: [remotebranch] syntaxis op te roepen die we een beetje eerder hebben besproken. Als je het gedeelte [lokale tak] weglaat, dan zeg je in feite: "Neem niets aan mijn kant en zorg dat het [remotebranche] wordt." Ik heb git push origin: bugfix uitgegeven en het werkte prachtig. Scott Chacon had gelijk - ik zal die pagina willen erkennen (of eigenlijk ‘’ ’’ ’’ ’dat je op Stack Overflow antwoordt. Dan moet u dit op andere machines uitvoeren # Wijzigingen ophalen van alle afstandsbedieningen en lokaal verwijderen # op afstand verwijderde branches / tags enz # --prune zal het werk doen: -; git fetch --all --prune om veranderingen door te voeren. | Matthew's antwoord is geweldig voor het verwijderen van afgelegen branches en ik waardeer ook de uitleg, maar om een eenvoudig onderscheid te maken tussen de twee commando's: Om een lokale tak van uw computer te verwijderen: git branch -d {the_local_branch} (gebruik in plaats daarvan -D om het verwijderen van de branch te forceren zonder de samengevoegde status te controleren) Om een remote branch van de server te verwijderen: git push oorsprong --delete {the_remote_branch} Referentie: Git: Verwijder een branch (lokaal of op afstand) | De korte antwoorden Als je meer gedetailleerde uitleg wilt van de volgende commando's, bekijk dan de lange antwoorden in de volgende sectie. Een externe tak verwijderen git push origin --delete # Git versie 1.7.0 of nieuwer git push origin -d # Kortere versie (Git 1.7.0 of nieuwer) git push origin: # Git-versies ouder dan 1.7.0 Een lokale vestiging verwijderen git branch --delete git branch -d # Kortere versie git branch -D # Force-delete niet-samengevoegde branches Verwijderen van een lokale vertakking op afstand git branch --delete --remotes / git branch -dr / # Korter git fetch --prune # Verwijder meerdere verouderde remote-tracking branches git fetch -p # Korter Het lange antwoord: er zijn drie verschillende takken om te verwijderen! Houd er bij het verwijderen van branches zowel lokaal als op afstand rekening mee dat er drie verschillende branches bij betrokken zijn: De plaatselijke vestiging X. De afgelegen oorsprongstak X. De lokale aftakking op afstand oorsprong / X die de aftakking X op afstand volgt. De originele gebruikte poster: git branch -rd oorsprong / bugfix Die alleen zijn lokale remote tracking branch origin / bugfix verwijderde, en niet de daadwerkelijke remote branch bugfix op origin. Om die daadwerkelijke remote branch te verwijderen, heb je nodig git push origin --delete bugfix Aanvullende details In de volgende secties worden aanvullende details beschreven waarmee u rekening moet houden bij het verwijderen van uw vertakkingen op afstand en op afstand volgen. Door te pushen om remote branches te verwijderen, worden ook remote tracking branches verwijderd Merk op dat het verwijderen van de remote branch X van de opdrachtregelhet gebruik van een git push zal ook de lokale remote-tracking branch origin / X verwijderen, dus het is niet nodig om de verouderde remote-tracking branch te verwijderen met git fetch --prune of git fetch -p. Het zou echter geen kwaad als je het toch deed. U kunt controleren of de oorsprong / X-tak voor op afstand volgen ook is verwijderd door het volgende uit te voeren: # Bekijk alleen vertakkingen voor het op afstand volgen git branch --remotes git branch -r # Bekijk zowel strikt lokale vertakkingen als vertakkingen op afstand git branch --all git branch -a Snoeien van de verouderde lokale remote tracking branch origin / X Als je je remote branch X niet van de commandoregel hebt verwijderd (zoals hierboven), dan zal je lokale repository nog steeds (een nu achterhaalde) remote tracking branch origin / X bevatten. Dit kan gebeuren als je bijvoorbeeld een remote branch rechtstreeks via de webinterface van GitHub hebt verwijderd. Een typische manier om deze verouderde remote tracking branches te verwijderen (sinds Git versie 1.6.6) is door simpelweg git fetch uit te voeren met de --prune of kortere -p. Merk op dat hiermee alle verouderde lokale remote-tracking branches worden verwijderd voor alle remote branches die niet langer op de remote bestaan: git fetch oorsprong --prune git fetch origin -p # Korter Hier is het relevante citaat uit de 1.6.6 release notes (nadruk van mij): "git fetch" heeft --all en --multipleoptions geleerd om fetch van uit te voeren veel repositories, en --prune optie om remote tracking te verwijderen takken die oud werden. Deze maken "git remote update" en "git snoeien op afstand "minder nodig (er is geen plan om te verwijderen" op afstand update "noch" snoeien op afstand "). Alternatief voor bovenstaande automatische snoei voor verouderde takken die op afstand worden gevolgd Als alternatief, in plaats van je verouderde lokale remote-tracking branches te snoeien met git fetch -p, kun je de extra netwerkoperatie vermijden door gewoon handmatig de branch (es) te verwijderen met de --remote of -r vlaggen: git branch --delete --remotes origin / X git branch -dr oorsprong / X # Korter Zie ook git-branch (1) handmatige pagina. git-fetch (1) handmatige pagina. Pro Git § 3.5 Git Branching - Remote Branches. | Stappen voor het verwijderen van een vertakking: Voor het verwijderen van de remote branch: git push origin --delete Voor het verwijderen van de lokale branch heeft u drie manieren: 1: git branch -D 2: git branch --delete --force # Zelfde als -D 3: git branch --delete # Fout bij het ongedaan maken van de samenvoeging Leg uit: Oké, leg gewoon uit wat hier aan de hand is! Doe gewoon git push origin --delete om alleen je remote branch te verwijderen, voeg de naam van de branch aan het einde toe en dit zal verwijderen en tegelijkertijd naar remote pushen ... Ook git branch -D, die alleen de lokale branch verwijdert! ... -D staat voor --delete --force wat de branch zal verwijderen, zelfs als deze niet is samengevoegd (force delete), maar je kunt ook -d gebruiken, wat staat voor --delete, wat een foutmelding geeft met betrekking tot de branch merge status ... Ik maak ook de onderstaande afbeelding om de stappen te laten zien: | U kunt ook het volgende gebruiken om de vertakking op afstand te verwijderen git push --delete origin serverfix Wat hetzelfde doet als git push oorsprong: serverfix maar het is misschien gemakkelijker te onthouden. | Tip: als u takken verwijdert met git branch -d # Verwijdert de lokale branch of git push origin: # Verwijdert remote branch alleen de verwijzingen worden verwijderd. Ook al is de branch daadwerkelijk verwijderd op de afstandsbediening, de verwijzingen ernaar bestaan nog steeds in de lokale repositories van uw teamleden. Dit betekent dat voor andere teamleden de verwijderde branches nog steeds zichtbaar zijn als ze een git branch -a doen. Om dit op te lossen, kunnen uw teamleden de verwijderde takken met snoeien git remote prune Dit is typisch git remote prune origin. | Als u een filiaal wilt verwijderen, moet u eerst afrekenen naar het filiaal anders dan het filiaal dat u wilt verwijderen. git checkout other_than_branch_to_be_deleted De lokale vestiging verwijderen: git branch -D branch_to_be_deleted De remote branch verwijderen: git push oorsprong --delete branch_to_be_deleted | git branch -D git branch -D -r oorsprong / git push oorsprong: | Dit is simpel: voer gewoon de volgende opdracht uit: Om een Git branch zowel lokaal als op afstand te verwijderen, verwijder je eerst de lokale branch met behulp van dit commando: git branch -d voorbeeld (Dit voorbeeld is de filiaalnaam.) En verwijder daarna de remote branch met behulp van deze opdracht: git push oorsprong: voorbeeld | Het is heel simpel: Om de remote branch te verwijderen git push -d oorsprong Of git push oorsprong: Om het lokale filiaal met geweld te verwijderen git branch -D | Een andere benadering is: git push --prune oorsprong WAARSCHUWING: Dit zal alle remote branches verwijderen die lokaal niet bestaan. Of uitgebreider, git push --mirror zal de externe repository er effectief laten uitzien als de lokale kopie van de repository (lokale heads, remotes en tags worden op afstand gespiegeld). | Ik gebruik het volgende in mijn Bash-instellingen: alias git-shoot = "git pushorigin --delete ' Dan kun je bellen: git-shoot branchname | Lokaal verwijderen: Om een lokale branch te verwijderen, kunt u gebruik maken van: git branch -d Gebruik -D in plaats van -d om een branch met geweld te verwijderen. git branch -D Op afstand verwijderen: Er zijn twee mogelijkheden: git push oorsprong: branchname git push oorsprong --delete branchname Ik raad je aan om de tweede manier te gebruiken, omdat deze intuïtiever is. | Sinds januari 2013 heeft GitHub een Verwijder branch knop toegevoegd naast elke branch in je "Branches" pagina. Relevante blogpost: maak en verwijder takken | Als je beide stappen met een enkele opdracht wilt voltooien, kun je er een alias voor maken door het onderstaande toe te voegen aan je ~ / .gitconfig: [alias] rmbranch = "! f () {git branch -d $ {1} && git push oorsprong --delete $ {1};}; f" U kunt dit ook vanaf de opdrachtregel toevoegen aan uw algemene configuratie met git config --global alias.rmbranch \ '! f () {git branch -d $ {1} && git push oorsprong --delete $ {1}; }; f ' OPMERKING: Als u -d (kleine letters d) gebruikt, wordt de branch alleen verwijderd als deze is samengevoegd. Om het verwijderen te forceren, moet u -D (hoofdletter D) gebruiken. | Om uw filiaal lokaal en op afstand te verwijderen Afrekenen naar master branch - git checkout master Verwijder je remote branch - git push origin --delete Verwijder je lokale branch - git branch --delete | Je kunt dit ook doen met git remote prune origin $ git remote prune origin Oorsprong snoeien URL: git@example.com/uwrepo.git * [gesnoeide] oorsprong / enkele takken Het snoeit en verwijdert remote-tracking branches uit een git branch -r lijst. | Naast de andere antwoorden gebruik ik vaak de tool git_remote_branch. Het is een extra installatie, maar het geeft je een gemakkelijke manier om te communiceren met externe branches. Om in dit geval te verwijderen: grb verwijder branch Ik merk dat ik ook de opdrachten voor publiceren en bijhouden vrij vaak gebruik. | Een one-liner-opdracht om zowel lokaal als extern te verwijderen: D = filiaalnaam; git branch -D $ D; git push oorsprong: $ D Of voeg de onderstaande alias toe aan uw ~ / .gitconfig. Gebruik: git kill branch-name [alias] kill = "! f () {git branch -D \" $ 1 \ "; git push oorsprong --delete \" $ 1 \ ";}; f" | Takken verwijderen Laten we aannemen dat ons werk aan branch "contact-form" klaar is en dat we het al in "master" hebben geïntegreerd. Omdat we het niet meer nodig hebben, kunnen we het (lokaal) verwijderen: $ git branch -d contactformulier En voor het verwijderen van de remote branch: git push oorsprong --delete contactformulier | Verwijder externe tak git push oorsprong: Verwijder de lokale vestiging git branch -D Verwijder lokale filiaalstappen: afrekenen naar een andere vestiging verwijder lokale branch | Zeg gewoon: git branch -d git push oorsprong: | git push origin --delete is gemakkelijker te onthouden dan git push oorsprong: branchName | Nu kunt u het doen met de GitHub Desktop-applicatie. Na het starten van de applicatie Klik op het project met de branch Schakel over naar de branch die u wilt verwijderen Selecteer in het menu "Vertakking", "Publicatie ongedaan maken ..." om de vertakking van de GitHub-servers te verwijderen. Selecteer in het "Branch" menu, 'Delete "branch_name" ...', om de branch van je lokale machine te verwijderen (AKA de machine waar je momenteel aan werkt) | Lokaal verwijderen - (normaal) git branch -d mijn_tak Als je branch bezig is met het rebasen / mergen en dat is niet goed gedaan, betekent dit dat je een foutmelding krijgt: Rebase / Merge bezig, dus in dat geval kun je je branch niet verwijderen. Dus ofwel moet je het rebasen / samenvoegen oplossen. Anders kunt u het verwijderen forceren door te gebruiken, git branch -D mijn_tak Verwijderen op afstand: git push --delete origin my_branch U kunt hetzelfde doen met: git push origin: my_branch # Gemakkelijk te onthouden, beide zullen hetzelfde doen. Grafische weergave: | Dit werkt niet als je een tag hebt met dezelfde naam als de branch op de afstandsbediening: $ git push oorsprong: branch-of-tag-naam fout: dst refspec branch-or-tag-name komt overeen met meer dan één. fout: sommige refs kunnen niet worden gepusht naar 'git@github.com: SomeName / some-repo.git' In dat geval moet je specificeren dat je de branch wilt verwijderen, niet de tag: git push oorsprong: refs / heads / branch-of-tag-naam Evenzo, om de tag te verwijderen in plaats van de branch die u zou gebruiken: git push oorsprong: refs / tags / branch-of-tag-naam | Veel van de andere antwoorden leiden tot fouten / waarschuwingen. Deze benadering is relatief onfeilbaar, hoewel je misschien nog steeds git branch -D branch_to_delete nodig hebt als het bijvoorbeeld niet volledig is samengevoegd in some_other_branch. git checkout some_other_branch git push oorsprong: branch_to_delete git branch -d branch_to_delete Op afstand snoeien is niet nodig als je de remote branch hebt verwijderd. Het wordt alleen gebruikt om de meest up-to-date afstandsbedieningen beschikbaar te krijgen in een opslagplaats die u bijhoudt. Ik heb waargenomen dat git fetch afstandsbedieningen zal toevoegen, niet verwijderen. Hier is een voorbeeld van wanneer git remote prune origin daadwerkelijk iets zal doen: Gebruiker Adoet de bovenstaande stappen. Gebruiker B zou de volgende opdrachten uitvoeren om de meest up-to-date remote branches te zien: git fetch git remote prune origin git branch -r | Ik werd het googelen naar dit antwoord beu, dus ik koos een vergelijkbare benadering voor het antwoord dat crizCraig eerder plaatste. Ik heb het volgende aan mijn Bash-profiel toegevoegd: functie gitdelete () { git push oorsprong --delete $ 1 git branch -D $ 1 } Elke keer dat ik klaar ben met een branch (bijvoorbeeld samengevoegd in master), voer ik het volgende uit in mijn terminal: gitdelete mijn-branch-naam ... die vervolgens my-branch-name verwijdert uit zowel de oorsprong als lokaal. | Voordat u begint git branch --delete zorg ervoor dat je eerst bepaalt wat de exacte naam van de remote branch is door het volgende uit te voeren: git ls-remote Dit zal u vertellen wat u precies moet invoeren voor de -waarde. (branch is hoofdlettergevoelig!) | Gebruik: git push origin: bugfix # Verwijdert remote branch git branch -d bugfix # Moet de lokale branch handmatig verwijderen Als u zeker weet dat u het wilt verwijderen, voert u uit git branch -D bugfix Om nu verwijderde remote branches op te ruimen, voer je uit git remote prune origin | 1 2 De volgende Zeer actieve vraag. Verdien 10 reputatie om deze vraag te beantwoorden. De reputatievereiste helpt deze vraag te beschermen tegen spam en niet-beantwoording. Niet het antwoord waar je naar zoekt? Blader door andere vragen met de tag git version-control git-branch git-push git-remote of stel je eigen vraag.